¿Por qué? y ¿cómo?
March 1, 2025
Artículo why we created Julia
Es código abierto:
todo está alojado en GitHub
Es reproducible:
permite controlar todas las versiones de todos los paquetes
Es dinámica:
utiliza tipos dinámicos, y la sintaxis es muy sencilla.
Es componible:
multiple distach
Eje vertical (tiempo del lenguaje) / (tiempo de ejecución en C)
La sintaxis para vectores y matrices veremos que es muy sencilla.
| Función | Julia | MATLAB |
|---|---|---|
| Leer vector | x[i] |
x(i) |
| Leer fila de matriz | A[i,:] |
A(i,:) |
| Resolver sistema lineal | A\b |
A\b |
| Funciones | f(x)=x^2 |
f = @(x) x^2 |
En Linux/MacOS ejecute en una terminal
En Windows ejecute en una terminal
Más información e instaladores convencionales en la web de julia
Primera ejecución
Al lanzar julia por primera vez veremos algo así:
Cuando lanzamos julia en terminal nos encontramos en el REPL (read-eval-print loop)
Aquí podemos introducir órdenes como las siguientes para obtener el resultado.
Variables
Lógica
x es [1, 2]. ¡Qué decir!
Los scripts de Julia son archivos .jl
Podemos definir funciones de varios modos:
El REPL tiene varios modos
| modo | terminal | uso | acceso |
|---|---|---|---|
| julian | julia> |
cálculos | |
| help | help?> |
ayuda | ? |
| shell | shell> |
terminal del sistema | ; |
| pkg | (@v1.11) pkg> |
gestión de paquetes | ] |
Para desarrollar código podemos usar Visual Studio Code con Julia.
También podemos utilizar libretas Jupyter
Para instalar jupyter introduzca en una terminal de julia
Para ejecutarlo
La primera vez pedirá instalar otros paquetes. Acepte introduciendo y.
Las funcionalidades avanzadas se cargan con paquetes (Plots, …)
Los paquetes están alojados en GitHub, donde suelen contar con amplia documentación: ejemplo Plots.jl
Para resolver una EDO podemos usar sintaxis similar a ode45
g = 9.79 # Gravitational constant
L = 1.00 # Length of pendulum
u₀ = [0, π / 60] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du, u, p, t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g / L) * θ
end
# Pass to solver
using DifferentialEquations
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob, Tsit5(), reltol=1e-6)
# Plot
using Plots
plot(sol.t, first.(sol.u), label="\\theta")Tomado de The Unreasonable Effectiveness of Multiple Dispatch
Sin modificar la librería DifferentialEquations podemos extenderla a otros “tipos de datos”
using Measurements
g = 9.79 ± 0.02 # Gravitational constant
L = 1.00 ± 0.01 # Length of pendulum
u₀ = [0 ± 0.0, π / 60 ± 0.01] # Initial speed and angle
tspan = (0.0, 6.3) # Time span
# Define the problem
function pendulum(du, u, p, t)
θ = u[1]
dθ = u[2]
du[1] = dθ
du[2] = -(g / L) * θ
end
# Pass to solver
using DifferentialEquations
prob = ODEProblem(pendulum, u₀, tspan)
sol = solve(prob, Tsit5(), reltol=1e-6)
# Plot
using Plots
plot(sol.t, first.(sol.u), label="\\theta")Tomado de The Unreasonable Effectiveness of Multiple Dispatch
Curso de introducción a julia. David Gómez-Castro (UAM)